"""
功能描述：定义公共的page方法，提供公共page方法的复用性
编写人：guodan
编写日期：2021年12月30日
实现逻辑：


    1-定义BasePage类
    2-封装实现公共的定位方法，实现定制化的定位
        2.1-封装显示等待的方法
        2.2-定义获取手机尺寸的方法
        2.3-定义上下左右滑动的方法

"""
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from common.logs import logger
from common.driver import Driver

class BasePage():
    def __init__(self,driver):
        self.driver = driver

    #封装显示等待方法
    def by_find_element(self,*items):
        try:
            element = WebDriverWait(self.driver,60,0.5).until(EC.presence_of_element_located(items))
            logger.info(f'元素{items}定位成功')
            return element
        except Exception as msg:
            logger.error(f'by_fing_element未找到此元素，提示：{msg}')


    def by_find_elements(self,*items):
        try:
            elements = WebDriverWait(self.driver,60,0.5).until(EC.presence_of_element_located(items))
            logger.info(f'元素{items}定位成功')
            return elements
        except Exception as msg:
            logger.error(f'by_find_elements未找到此元素，提示：{msg}')

    #定义获取屏幕尺寸的方法
    def getSize(self):
        logger.info('获取屏幕尺寸')
        # 获取屏幕的宽，定义为x
        x = self.driver.get_window_size()['width']
        # 获取屏幕的高，定义为y
        y = self.driver.get_window_size()['height']
        return (x,y)

    #向上滑动屏幕，t是滑动的时间，毫秒
    def swipeUp(self,t = 1000):
        l = self.getSize()
        x1 = int(l[0]*0.5)
        y1 = int(l[1]*0.75)
        y2 = int(l[1]*0.25)
        self.driver.swipe(x1,y1,x1,y2,t)




if __name__ == '__main__':
    d = Driver()
    driver = d.startUp()
    bp = BasePage(driver)
    bp.swipeUp()
    bp.by_find_element()

